package com.sihan.framework.etm.mapper;

import com.framework.mybatis.mapper.BaseMapper;
import com.sihan.framework.etm.dto.OrgDTO;
import com.sihan.framework.etm.entity.Org;
import com.sihan.framework.etm.vo.OrgVO;

import java.util.Date;
import java.util.List;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

@Mapper
public interface OrgMapper extends BaseMapper<Org, String> {

  /**
   * 递归查询子类单位Id
   * @param parentId
   * @return
   * @return List<OrgVO>
   * @author 张荣英
   * @date Jul 30, 2019 3:10:27 PM
   */
  List<OrgVO> recursiveChildrenId(@Param("id") String parentId);


  List<String> selectAllByUserId(@Param("orgId") String orgId);

  List<String> selectAllOrgId();

  /**
   * 通过权限Ids批量更新available字段
   *
   * @param permissionIds 权限Ids
   * @param available 是否可用
   */
  int updateAvailableByIds(@Param("permissionIds") List<String> permissionIds,
      @Param("available") Boolean available,
                           @Param("updateTime") Date updateTime,
      @Param("updateUser") String updateUser);

  /**
   * 通过父类Id递归查询所有的子单位信息
   *
   * @param parentId
   * @return
   * @return List<OrgVO>
   * @author 张荣英
   * @date Jul 30, 2019 2:58:31 PM
   */
  List<OrgVO> recursiveChildren(@Param("parentId") String parentId,@Param("li") String li);

  List<OrgVO> selectOrgByOrgId(@Param("li") String li);

  List<OrgVO> selectByorgIds(@Param("orgIds") String[] orgIds);

  List<OrgVO> listOrgByIdOrPId(@Param("param") OrgDTO dto);

  List<OrgVO> queryByUser(@Param("param") OrgDTO dto);


  String selectOneByNameString(@Param("param") String orgName);

  /**
   * @param userId
   * @return
   * @return OrgVO
   * @description 查询用户所属组织
   * @auther 韩兵
   * @Date 2020年7月17日
   */
  OrgVO selectUserBelongOrg(@Param("userId") String userId);

  /**
   * @return
   * @return List<Org>
   * @description 获取所有叶子节点
   * @auther 韩兵
   * @Date 2020年12月29日
   */
  List<Org> listLeafOrg();
  
}